/* 
 * ViaturaGuarnicao.java
 * 
 * Data de criação: 05/10/2010
 * 
 * O2SOLUTIONS - SOLUÇÕES EM TECNOLOGIA DA INFORMAÇÃO.ÇÕES EM TECNOLOGIA DA INFORMAÇÃO. 
 *
 */
package br.com.o2solutions.siso.integration.entidade;

import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import br.com.o2solutions.core.integration.repository.entity.BaseEntity;

/**
 * Classe responsável por representar a entidade de mapeamento que referencia a
 * relação entre a guarnicao de atendimento, o agente que conduzirá a viatura e
 * a viatura.
 * 
 * @author Osvaldeir
 * @since 05/10/2010
 * 
 */
@Entity
@Table(name = "RLVIATURAGUARNICAO", uniqueConstraints = { @UniqueConstraint(columnNames = {
		"GUARNICAOID", "VIATURAUNIDADEOPERACIONALID", "AGENTEID" }) })
@SequenceGenerator(name = "SQVIATURAGUARNICAO", sequenceName = "SQVIATURAGUARNICAO")
public class ViaturaGuarnicao extends BaseEntity<Integer> {

	private static final long serialVersionUID = 1L;

	private Guarnicao guarnicao;

	private ViaturaUnidadeOperacional viaturaUnidadeOperacional;

	private Agente motorista;

	/**
	 * Retorna o(a) guarnicao.
	 * 
	 * @return Guarnicao
	 */
	@ManyToOne
	@JoinColumn(name = "GUARNICAOID")
	public Guarnicao getGuarnicao() {
		return guarnicao;
	}

	/**
	 * Atribui o(a) guarnicao.
	 * 
	 * @param guarnicao
	 *            Guarnicao
	 */
	public void setGuarnicao(Guarnicao guarnicao) {
		this.guarnicao = guarnicao;
	}

	/**
	 * Retorna o(a) viaturaUnidadeOperacional.
	 * 
	 * @return ViaturaUnidadeOperacional
	 */
	@ManyToOne
	@JoinColumn(name = "VIATURAUNIDADEOPERACIONALID")
	public ViaturaUnidadeOperacional getViaturaUnidadeOperacional() {
		return viaturaUnidadeOperacional;
	}

	/**
	 * Atribui o(a) viaturaUnidadeOperacional.
	 * 
	 * @param viaturaUnidadeOperacional
	 *            ViaturaUnidadeOperacional
	 */
	public void setViaturaUnidadeOperacional(
			ViaturaUnidadeOperacional viaturaUnidadeOperacional) {
		this.viaturaUnidadeOperacional = viaturaUnidadeOperacional;
	}

	/**
	 * Retorna o(a) motorista.
	 * 
	 * @return Agente
	 */
	@ManyToOne
	@JoinColumn(name = "AGENTEID")
	public Agente getMotorista() {
		return motorista;
	}

	/**
	 * Atribui o(a) motorista.
	 * 
	 * @param motorista
	 *            Agente
	 */
	public void setMotorista(Agente motorista) {
		this.motorista = motorista;
	}

}
